package com.huihe.common.utils;

import lombok.extern.slf4j.Slf4j;
import java.net.*;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

/**
 * HTTP请求工具类
 * 日志格式:
 *      [HTTP]:HTTP Utils
 *      [SGET]:Send GET HTTP
 */
@Slf4j
public class HttpUtils {

    /**
     * 向指定 URL 发送GET方法的请求
     * @param url 发送请求的 URL
     * @param param 请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
     * @param contentType 编码类型
     * @return 远程资源的响应结果
     */
    public static String sendHttpGet(String url, String param, String contentType) {
        //创建客户端
        HttpClient client = HttpClient.newHttpClient();
        log.info("[HTTP][SGET] 本次请求的URL为:{}",url+param);
        //创建请求
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url+param))
                //设置请求头
                .header("Accept", "*/*")
                .header("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
                .GET()
                .build();
        try {
            // 同步发送请求并获取响应
            HttpResponse<byte[]> response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
            // 获取响应状态码
            int statusCode = response.statusCode();
            log.info("[HTTP][SGET] 本次请求的响应状态码:{}",statusCode);
            // 将响应体转换为指定编码的 String
            byte[] responseBody = response.body();
            return new String(responseBody, contentType);
        }catch (Exception e){
            log.error("[HTTP][SGET] "+e.getMessage(),e);
        }
        return "";
    }
}
